Stable Diffusion + Control Net
В одному з минулих випусків цього робочого журналу ми познайомилися з одним з видів цифрового мистецтва — Муаром, яке має корені у відомому в графіці жанрі Гільйош, що широко використовується при монетних дворах. Прихована складність арт-обʼєктів підвищує їх вартість і привертає увагу. Сьогодні ми познайомимося зі ще одним видом цифрового мистецтва, жанром, що сформувався недавно (09.06.2023) який поєднує QR коди та генеративну графіку засобами статистичних моделей та градієнтного спуску. Дана стаття представляє роботи українського цифрового художника bookazoid, ця серія робіт присвячена фонду «Повернить живим», а QR коди представлені у статті ведуть на сторінку підримки цього фонду savelife.in.ua, завдання якого зберегти життя кожного українця.
Хоча вже створені багато додаткових інструментів, найкращий артистичний результат досягається за допомогою веб-версії Stable Diffusion AUTOMATIC1111/stable-diffusion-webui, та моделі Control Net, навченої спеціально для мешапа QR коду з ініціальним арт-обʼєктом Mikubill/sd-webui-controlnet. Детальні інструкції надані в науковому апараті. Тут лиш скажемо шо дані результати були отримані за допомогою моделей Control Net V11 F1E TILE для Stable Diffusion 1.5.
control_stage_config:
target: cldm.cldm.ControlNet
params:
in_channels: 4
hint_channels: 3
model_channels: 320
attention_resolutions: [ 4, 2, 1 ]
num_res_blocks: 2
channel_mult: [ 1, 2, 4, 4 ]
num_heads: 8
use_spatial_transformer: True
transformer_depth: 1
context_dim: 768
use_checkpoint: True
legacy: False
unet_config:
target: cldm.cldm.ControlledUnetModel
params:
in_channels: 4
out_channels: 4
model_channels: 320
attention_resolutions: [ 4, 2, 1 ]
num_res_blocks: 2
channel_mult: [ 1, 2, 4, 4 ]
num_heads: 8
use_spatial_transformer: True
transformer_depth: 1
context_dim: 768
use_checkpoint: True
legacy: False
Ця технологія може бути застосована також і у рекламі для розміщення посилань у відкритих просторах анонсуючи певні події, фільми, ресторани, заходи, рекламуючи певні компанії, витвори мистецтва тощо.
При використанні веб-інтерфейсу основні параметри для тюнінгу такі:
Resize mode: Just resize
Sampling method: DPM++2M Karras
Sampling step: 50
Width: 768
Height: 768
CFG Scale: 7
Denoising strength: 0.75
Enable: Yes
Control Type: Tile
Preprocessor: tile_resample
Model: control_xxx_tile
Control Weight: 0.87
Starting Control Step: 0.23
Ending Control Step: 0.9
Використання дифʼюзерів без веб-інтерфейсу може виглядати так:
pip -q install diffusers transformers accelerate torch xformers
import torch
from PIL import Image
from diffusers import StableDiffusionControlNetImg2ImgPipeline
from diffusers import ControlNetModel
from diffusers import DDIMScheduler
from diffusers.utils import load_image
controlnet = ControlNetModel.from_pretrained(
"DionTimmer/controlnet_qrcode-control_v1p_sd15",
torch_dtype=torch.float16)
pipe = StableDiffusionControlNetImg2ImgPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
controlnet=controlnet,
safety_checker=None,
torch_dtype=torch.float16)
pipe.enable_xformers_memory_efficient_attention()
pipe.scheduler = DDIMScheduler.from_config(pipe.scheduler.config)
pipe.enable_model_cpu_offload()
def resize_for_condition_image(input_image: Image, resolution: int):
input_image = input_image.convert("RGB")
W, H = input_image.size
k = float(resolution) / min(H, W)
H *= k
W *= k
H = int(round(H / 64.0)) * 64
W = int(round(W / 64.0)) * 64
img = input_image.resize((W, H), resample=Image.LANCZOS)
return img
source_image = load_image("source.png")
init_image = load_image("initial.jpeg")
condition_image = resize_for_condition_image(source_image, 768)
init_image = resize_for_condition_image(init_image, 768)
generator = torch.manual_seed(123121231)
image = pipe(prompt="PDP-11 backplane",
negative_prompt="ugly, disfigured, lofi",
image=init_image,
control_image=condition_image,
width=768,
height=768,
guidance_scale=20,
controlnet_conditioning_scale=1.5,
generator=generator,
strength=0.9,
num_inference_steps=150)
image.images[0]
Реклама фонду «Повернись живим»
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Реклама видавництва «Аксіосис»
![]() |
![]() |
[1]. stable-diffusion-art.com/qr-code/
[2]. stable-diffusion-art.com/controlnet/
[3]. DionTimmer/controlnet_qrcode-control_v1p_sd15